home *** CD-ROM | disk | FTP | other *** search
/ Amiga Inside! / Amiga FD Inside (1995)(Ultramax).iso / forumamiga / ausgabe15 / texte / basic-kurs < prev    next >
Text File  |  1993-08-27  |  5KB  |  120 lines

  1.  
  2.          BASIC-KURS IM FA 15: SCREENS UND WINDOWS IN AMIGABASIC (II)
  3.          ===========================================================
  4.  
  5. Nachdem ich im letzten FA die Screens- und Window-Grundfunktionen beschrieben
  6. habe, geht´s heute etwas tiefer in die Materie.
  7.  
  8. Kurz zur Wiederholung:
  9. Die im letzten FA besprochenen Befehle waren
  10. SCREEN Nummer,Breite,Höhe,Tiefe,Auflösung (öffnet einen Screen)
  11. SCREEN CLOSE Nummer (schließt einen Screen)
  12. WINDOW Nummer,[[Titel],[(x1,y1)-(x2,y2)],[Typ],[Schirm]] (öffnet Fenster)
  13. WINDOW CLOSE Nummer (schließt ein Fenster)
  14.  
  15. Für manche Programme ist es wichtig, bestimmte Informationen über das aktuel-
  16. le Fenster abzufragen. Das ist dann der Fall, wenn bestimmte Fensterdaten vom
  17. Benutzer verändert werden können (z.B. Größe oder aktuelles Fenster).
  18. Dazu gibt es eine nützliche Funktion:
  19.  
  20. x=WINDOW(n)
  21.  
  22. n gibt dabei die Information an, die gewünscht wird. Folgende Informationen
  23. sind dabei möglich:
  24.  
  25. Für n=0 wird die Nummer des gewählen Fensters ausgegeben (bei OS1.3 erscheint
  26.         dieses nicht in Geisterschrift, bei OS2.0+ ist die Titelzeile dieses
  27.         Fensters die 3. Preferences-Farbe (auf der WB2.0 wäre das blau, auf
  28.         der WB1.3 gelb)).
  29. Für n=1 wird die Nummer des aktuellen Ausgabefensters ausgegeben (in diesem
  30.         Fenster wirken alle Ausgabe-Anweisungen wie PRINT, LINE usw.). Die
  31.         Nummer des gewählten Fensters ist nicht unbedingt identisch mit dem
  32.         aktuellen Ausgabefenster!
  33. Für n=2 wird die Breite des aktuellen Ausgabefensters ausgegeben.
  34. Für n=3 wird die Höhe des aktuellen Ausgabefensters ausgegeben.
  35. Für n=4 wird die X-Koordinate des aktuellen Ausgabefensters ausgegeben, auf
  36.         der das nächste Zeichen platziert wird.
  37. Für n=5 wird die Y-Koordinate des aktuellen Ausgabefensters ausgegeben, auf
  38.         der das nächste Zeichen platziert wird.
  39. Für n=6 wird die Zahl der erlaubten Farben des aktuellen Ausgabefensters aus-
  40.         gegeben (dies hängt vom Screen ab, auf dem sich das Fenster befindet;
  41.         auf dem WB-Screen sind das 4 Stück, durchnumeriert von 0 bis 3).
  42. Für n=7 wird ein Zeiger auf die Intuition-WINDOW-Struktur des aktuellen Aus-
  43.         gabefensters ausgegeben.
  44. Für n=8 wird ein Zeiger auf die Intuiton-Rastport-Struktur des aktuellen Aus-
  45.         gabefensters ausgegeben.
  46.  
  47. Beispiel 1:
  48. WINDOW WINDOW(0)
  49. macht das vom User gewählte Fenster zum aktuellen Ausgabefenster.
  50.  
  51. Beispiel 2:
  52. h=WINDOW(3)
  53. speichert in h die Höhe des aktuellen Ausgabefensters.
  54.  
  55. Beispiel 3:
  56. ->
  57. a=WINDOW(1)
  58. WINDOW WINDOW(0)
  59. b=WINDOW(2)
  60. h=WINDOW(3)
  61. WINDOW a
  62. <-
  63. Dieses Programm speichert die Nummer des aktuellen Ausgabefensters in der Va-
  64. riablen a (Zeile 1), macht das gewählte Fenster zum aktuellen Ausgabefenster
  65. (2), berechnet dessen Breite und Höhe (3,4) und macht das ehemals aktuelle
  66. Ausgabefenster wieder zum aktuellen Ausgabefenster (5). So kann man die Daten
  67. des gewählten Fensters erhalten, ohne dabei die Daten des aktuellen Ausgabe-
  68. fensters zu verlieren.
  69.  
  70. Kommen wir nun zu einer weiteren Funktion:
  71. WINDOW OUTPUT n
  72. Dabei ist n die Nummer des Fensters.
  73.  
  74. Mit dieser Funktion macht man das Fenster zum aktuellen Ausgabefenster, holt
  75. es aber nicht in den Vordergrund!
  76.  
  77. Diese Funktion kann v.a. dazu benutzt werden, um beispielsweise auf einem 2.
  78. Screen ein Bild zeichnen zu lassen und es erst später auf dem Bildschirm er-
  79. scheinen lassen (wenn´s fertig ist).
  80.  
  81. Nehmen wir mal an, es existiert bereits ein Fenster Nummer 1 auf dem Work-
  82. bench-Screen. Man muß nun einen 2. Screen und darauf ein Fenster öffnen. Da-
  83. nach holt man Fenster 1 in den Vordergrund und macht Fenster 2 wieder zum
  84. Ausgabefenster. Dort wird das Bild dann gezeichnet und in den Vordergrund
  85. geholt.
  86.  
  87. ->
  88. SCREEN 2,640,256,2,2                ' öffnet einen 2. Screen
  89. WINDOW 2,"Neues Fenster",,31,2      ' öffnet ein neues Fenster auf Screen 2
  90. WINDOW 1                            ' holt Fenster 1 in den Vordergrund
  91. WINDOW OUTPUT 2                     ' macht Fenster 2 zum Ausgabefenster
  92. ' hier folgt dann die Bild-Zeichen-Routine (z.B. GOSUB BildMalen)
  93. WINDOW 2                            ' holt Fenster 2 in den Vordergrund
  94. <-
  95.  
  96. Bevor ich nun diesen Teil des Basic-Kurses beenden werde, möchte ich noch
  97. auf eine Kleinigkeit (?!) eingehen.
  98. Wie Ihr sicherlich bemerkt habt, bietet die WINDOW(n)-Funktion keine Möglich-
  99. keit, die Koordinaten der linken oberen und rechten unteren Bildschirmecke
  100. zu erhalten. Dies kann aber mittels der Adresse aus der WINDOW(7)-Funktion
  101. machen. Folgendes Beispielprogramm zeigt wie:
  102.  
  103. ->
  104. fen&=WINDOW(7)      ' holt die Fensteradresse
  105. x=PEEKW(fen&+4)     ' x-Koordinate der linken oberen Bildschirmecke
  106. y=PEEKW(fen&+6)     ' y-Koordinate der linken oberen Bildschirmecke
  107. <-
  108.  
  109. Das wäre soweit alles, was ich zu diesem Thema sagen wollte. Ich könnte zwar
  110. noch einiges sagen, was aber - wie ich meine - nicht sooo viel nützen würde.
  111. Falls irgendjemand aber noch etwas bestimmtes wissen will, kann er gerne im
  112. FA fragen. Ich werde versuchen, das dann (wenn möglich) zu beantworten.
  113.  
  114.  
  115. Dieser Teil des Basic-Kurs ist © 8/1993 by Stefan Grad. Er ist exklusiv für
  116. das FORUM AMIGA. Andersweitige Verbreitung erst nach meiner schriftlichen
  117. Genehmigung. Die LISTINGS können gerne in eigene Programme übernommen werden,
  118. jedoch wäre ein Hinweis auf das FORUM AMIGA und diesen Kurs ganz nett...
  119.  
  120.